package com.iplant.basic.service;

import com.iplant.base.po.excel.ExcelData;
import com.iplant.basic.service.po.mss.*;
import com.iplant.base.po.Pagination;
import com.iplant.base.po.ServiceResult;
import com.iplant.basic.service.po.bms.BMSEmployee;

import java.util.List;

public interface MSSService {
    // 单位&包装

    // 单位

    ServiceResult<Integer> MSS_UpdateUnit(BMSEmployee wLoginUser, MSSUnit wUnit);

    ServiceResult<Integer> MSS_DeleteUnit(BMSEmployee wLoginUser, MSSUnit wUnit);

    ServiceResult<Integer> MSS_ActiveUnit(BMSEmployee wLoginUser, MSSUnit wUnit, int wActive);

    ServiceResult<MSSUnit> MSS_QueryUnit(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<MSSUnit>> MSS_QueryUnitList(BMSEmployee wLoginUser, int wGroupID, String wGroupFullName,
                                                   String wName, int wActive, Pagination wPagination);

    // 单位组

    ServiceResult<Integer> MSS_UpdateUnitGroup(BMSEmployee wLoginUser, MSSUnitGroup wUnitGroup);

    ServiceResult<Integer> MSS_DeleteUnitGroup(BMSEmployee wLoginUser, MSSUnitGroup wUnitGroup);

    ServiceResult<Integer> MSS_ActiveUnitGroup(BMSEmployee wLoginUser, MSSUnitGroup wUnitGroup, int wActive);

    ServiceResult<MSSUnitGroup> MSS_QueryUnitGroup(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<MSSUnitGroup>> MSS_QueryUnitGroupList(BMSEmployee wLoginUser, int wGroupID,
                                                             String wGroupFullName, String wName, int wActive, Pagination wPagination);


    // 物料类型


    ServiceResult<Integer> MSS_UpdateMaterialType(BMSEmployee wLoginUser, MSSMaterialType wMaterialType);

    ServiceResult<Integer> MSS_DeleteMaterialType(BMSEmployee wLoginUser, MSSMaterialType wMaterialType);

    ServiceResult<Integer> MSS_ActiveMaterialType(BMSEmployee wLoginUser, MSSMaterialType wMaterialType, int wActive);

    ServiceResult<MSSMaterialType> MSS_QueryMaterialType(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<MSSMaterialType>> MSS_QueryMaterialTypeList(BMSEmployee wLoginUser, String wName, int wActive,
                                                                   Pagination wPagination);

    // 物料组

    ServiceResult<Integer> MSS_UpdateMaterialGroup(BMSEmployee wLoginUser, MSSMaterialGroup wMaterialGroup);

    ServiceResult<Integer> MSS_DeleteMaterialGroup(BMSEmployee wLoginUser, MSSMaterialGroup wMaterialGroup);

    ServiceResult<Integer> MSS_ActiveMaterialGroup(BMSEmployee wLoginUser, MSSMaterialGroup wMaterialGroup,
                                                   int wActive);

    ServiceResult<MSSMaterialGroup> MSS_QueryMaterialGroup(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<List<MSSMaterialGroup>> MSS_QueryMaterialGroupList(BMSEmployee wLoginUser, String wName,
                                                                     int wParentGroupID, String wGroupFullName, int wActive, Pagination wPagination);

    // 物料

    ServiceResult<Integer> MSS_UpdateMaterial(BMSEmployee wLoginUser, MSSMaterial wMaterial);

    ServiceResult<Integer> MSS_UpdateMaterialList(BMSEmployee wLoginUser, List<MSSMaterial> wMaterialList);

    ServiceResult<Integer> MSS_DeleteMaterial(BMSEmployee wLoginUser, MSSMaterial wMaterial);

    ServiceResult<Integer> MSS_ActiveMaterial(BMSEmployee wLoginUser, MSSMaterial wMaterial, int wActive);

    ServiceResult<List<MSSMaterial>> MSS_QueryMaterialList(BMSEmployee wLoginUser, String wMaterialNoLike,
                                                           String wMaterialNameLike, int wMaterialTypeID, int wMaterialGroupID, int wTypeID,
                                                           String wMaterialFullGroup, String wMaterialMode, String wDrawingNoLike, int wRecoil,
                                                           int wOutsourced, int wActive, Pagination wPagination);

    ServiceResult<MSSMaterial> MSS_QueryMaterial(BMSEmployee wLoginUser, int wID, String wCode);

    ServiceResult<Integer> MSS_ImportMaterial(BMSEmployee wLoginUser, ExcelData result);
}
